# 定义 roll 函数
roll <- function(){
  dice_faces <- 1:6
  #probabilities <- c(1/6, 1/6, 1/6, 1/6, 1/6, 1/6)
  #result <- sample(dice_faces, size = 2, prob = probabilities, replace = TRUE)
  result <- sample(dice_faces, size = 2, replace = TRUE)
  return (sum(result))
}

#随着投掷次数的增加，各个部分的方形图也趋近于相同
a<-replicate(10,roll())
library(ggplot2)
qplot(a,binwidth=1)
a<-replicate(100,roll())
qplot(a,binwidth=1)
a<-replicate(10000,roll())
qplot(a,binwidth=1)



install.packages("readxl")
library(readxl)
deck <- read_excel ("deck.xlsx")

#0：war
deck2 <- deck
shuffle <- function(cards) {
  # 利用sample函数随机生成52个数字
  order <- sample(1:52, size = 52)
  # 利用生成的随机数去索引数据
  return(cards[order, 1:3])
}
deck2 <- shuffle(deck)
deck2$value[deck2$face == "ace"] <- 14
deck2[deck2$face == "ace", 'value'] <- 14
View(deck2)

#1:hearts
deck4 <- deck
# 假设deck是一个已经存在的数据框，包含一副扑克牌的信息
# 1. 制作一副牌（deck）的副本，命名为`deck4`
deck4 <- deck
# 2. 将`deck4`中所有牌的点数值（value列）赋值为0
deck4$value <- 0
# 3. 将`deck4`中所有红桃牌的点数更改为1
# 假设牌的花色信息存储在名为suit的列中，红桃用"Hearts"表示
deck4$value[deck4$suit == "hearts"] <- 1
# 4. 将`deck4`中黑桃Queen的点数更改为13
# 假设牌的面值信息存储在名为face的列中，黑桃Queen用"Queen of Spades"表示
deck4$value[deck4$face == "queen" & deck4$suit == "spades"] <- 13
# 打印修改后的deck4以查看结果
print(deck4)

#2:blackjack
# 假设deck是一个已经存在的数据框，包含一副扑克牌的信息
# 1. 为deck建立副本deck5
deck5 <- shuffle(deck)
# 2. 修改人头牌（jack, king, queen）的点数为10
# 假设牌的面值信息存储在名为face的列中
deck5$value[deck5$face %in% c("jack", "king", "queen")] <- 10
# 3. 对于Ace的点数，需要根据游戏规则来决定其点数是11还是1
# 这里我们先将其点数设为1，如果这样会导致总点数超过21，则改为11
# 假设Ace的面值信息存储在名为face的列中，且Ace的初始点数为1
# 这里我们不直接修改Ace的点数，而是在计算总点数时根据需要调整
deck5$value[deck5$face == "ace"] <- 1
deck5$value[deck5$face == "ace"]<-NA
# 打印修改后的deck5以查看结果
print(deck5)



play <- function() {
  get_symbols <- function() {
    wheel <- c("DD", "7", "BBB", "BB", "B", "C", "0")
    sample(wheel, size = 3, replace = TRUE, prob = c(0.03, 0.03, 0.06, 0.1, 0.25, 0.01, 0.4))
  }

  symbols <- get_symbols()
  print(symbols)

  same <- all(symbols == symbols[1])
  bar <- all(symbols %in% c("B", "BB", "BBB"))
  symbols <- c("C", "DD", "DD")

  if (same) {
    # 找到对应的中奖金额
    payout <- c("D" = 100, "7" = 80, "BBB" = 40, "BB" = 25, "B" = 10, "C" = 10)
    prize <- unname(payout[symbols[1]])
  } else if (bar) {
    prize <- 5
  } else {
    # 计算樱桃的数量
    cherry <- sum(symbols == "C")
    prize <- c(0, 2, 5)[cherry + 1]
  }

  # 计算钻石的数量
  diamond <- sum(symbols == "DD")
  prize <- prize + (2 * diamond)

  print(prize)
}
play()
